package org.wdcode.back.helper;

import java.util.List;
import java.util.Map;

import org.wdcode.back.cache.DepartmentCache;
import org.wdcode.back.po.Department;
import org.wdcode.base.helper.BaseEntityCacheHelper;
import org.wdcode.common.tools.Conversion;
import org.wdcode.common.tools.Lists;

/**
 * 部门相关业务助手类 可操作缓存
 * @author WD
 * @since JDK6
 * @version 1.0 2009-11-23
 */
public final class DepartmentHelper extends BaseEntityCacheHelper<DepartmentCache, Department> {
	// 部门助手
	private static DepartmentHelper	helper;

	/**
	 * 根据部门ID获得所属部门ID
	 * @param id 部门ID
	 * @return 部门ID
	 */
	public int getCompanyId(int id) {
		return get(id).getCompanyId();
	}

	/**
	 * 获得默认第一个公司的部门
	 * @return 公司下的所有部门
	 */
	public List<Department> getByComp() {
		return getByComp(CompanyHelper.getHelper().getList().get(0).getCompanyId());
	}

	/**
	 * 获得公司下的所有部门
	 * @param compId 公司ID
	 * @return 公司下的所有部门
	 */
	public List<Department> getByComp(Integer compId) {
		// 判断公司ID
		if (compId == null) {
			return getByComp();
		} else if (Conversion.toInt(compId) == 0) {
			return getList();
		} else {
			// 获得全部部门
			Map<Integer, Department> map = getCaches();
			// 声明列表 保存获得的部门
			List<Department> list = Lists.getList();
			// 循环部门
			for (Department department : map.values()) {
				// 判断不是是这个公司的
				if (compId.equals(department.getCompanyId())) {
					// 添加到列表
					list.add(department);
				}
			}
			// 返回列表
			return list;
		}
	}

	/**
	 * 实例化一个实体
	 * @return
	 */
	public Department newInstance() {
		return new Department();
	}

	/**
	 * 获得子类的Class
	 * @return 子类的Class
	 */
	public Class<Department> getEntityClass() {
		return Department.class;
	}

	/**
	 * 获得部门助手
	 * @return 部门助手
	 */
	public static DepartmentHelper getHelper() {
		return helper;
	}

	/**
	 * 设置部门助手
	 * @param helper 部门助手
	 */
	public void setHelper(DepartmentHelper helper) {
		DepartmentHelper.helper = helper;
	}
}
